D79 Wave 3: summaries consumed as orientation — closes #165 - #171
Merged
Conversation
Grok + Opus both APPROVE-WITH-FIXES; all findings applied: - The summary->prefix second-order channel (Opus MAJOR, adjudicated "status quo on quotability, widening of reach"): the E1 instruction now constrains OUTPUT (describe where the passage sits; never restate a summary's assertions) and the accepted residual is recorded in the design consumption bullet and a dated D79 amendment, alongside the carried-prefix staleness corollary. - Cross-generation orientation guard implemented, not just documented: ChunkForEmbedding carries section_id (loaded in the embedding SELECT), and render_section_orientation degrades to None when the chunk's section id does not match the current generation's row at that path — a coincident node path across a skeleton regeneration can no longer attach another section's summaries. Unit test included. - Fact-injection probes extended to every LEGAL added_context kind (header/neighbour/prefix) with summary-only poison text. - E2's degraded "(none)" rendering pinned by test; asymmetry with E1's zero-bytes documented as bundle-idiom consistency (adjudicated against the symmetry suggestion). - Reuse test de-tautologized (reuse breadth pinned by count) and its docstring scoped honestly; NEW pure summary-seat-swap chain test proves the un-conflated D79 promise: new generation minted, pointer moved, zero Selection calls, zero ContextPrefix calls, byte-identical extraction_input_hash. Fast gate local (ruff, pyright, targeted suites); the full matrix is CI's job per the new split policy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKENhTLJg1HqhbdwCmmkbc
fazpu
enabled auto-merge (squash)
July 29, 2026 10:33
Coverage reportClick to see where and how coverage changed
This report was generated by python-coverage-comment-action |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The final wave of #165: section summaries become consumed orientation context in E1 prefixes and the E2 extraction bundle, per
plan/designs/e0_files_design.md§4.1's consumption bullet and its two hard rules.What ships
workers/section_orientation.py, contractd79-section-orientation-v1): target-first + nearest-ancestor one-liners under a 2048-char hard cap, from the CURRENT structure generation only, with a cross-generation guard — a chunk cut under a superseded skeleton degrades to no orientation rather than attaching a merely path-coincident section's summaries.E1_PREFIXER_VERSION07c. Degraded generations contribute zero bytes; prefix carry-forward is untouched (no re-prefix fan-out on summary changes).(none)idiom when degraded) with orientation-only guidance in both Selection and Claimify prompts —E2_EXTRACTOR_VERSION07f.summaryadded-context kind exists; fact-injection probes prove summary-only poison text fails the gate under the illegal kind AND every legal kind (header/neighbour/prefix membership).extraction_input_hashunchanged by summaries; the new pure summary-seat-swap chain test proves the un-conflated D79 promise — new generation minted and pointer moved with zero Selection calls, zero ContextPrefix calls, and byte-identical hashes.Review trail
Codex implemented; Grok and Opus reviewed independently — both APPROVE-WITH-FIXES, converging on the one substantive question: the summary→prefix second-order channel. Adjudication (recorded in the design + a dated D79 amendment): status quo on quotability, widening of reach — the prefix was always LLM text and always quotable; bottom-up summaries widen what can influence it; accepted as layer-3/4 audit territory with the output-constraining instruction as in-prompt mitigation. All other findings applied, including Opus's latent cross-generation mismatch (guard implemented, not just documented) and the de-tautologized reuse assertion.
Benchmarks, tool catalog, and recipes untouched — engine-side only.